package com.xiaoxiong.database;

import java.util.List;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

/**
 * 数据库操作通用类
 * @author pure
 */
public class DatabaseOperate {
	
	private DatabaseHelper databaseHelper;
	
	public DatabaseOperate(Context context,String dbName){
		databaseHelper = new DatabaseHelper(context,dbName);
	}
	
	/**
	 * 插入
	 * @param tableName 表名
	 * @param column 要插入的字段名
	 * @param value 要插入的字段值
	 * @author pure
	 */
	public void insert(String tableName,List<String> column,List<Object> value){
		SQLiteDatabase db = databaseHelper.getWritableDatabase();
		String sql="insert into "+tableName+"(";
		sql+=column.get(0);
		for(int i=1;i<column.size();i++){
			sql+=","+column.get(i);
		}
		sql+=") values(";
		sql+="?";
		for(int i=1;i<column.size();i++){
			sql+=",?";
		}
		sql+=")";
		Object[] object=new Object[value.size()];
		for(int i=0;i<value.size();i++){
			object[i]=value.get(i);
		}
		db.execSQL(sql,object);
		db.close();
	} 
	
	/**
	 * 查询
	 * @param tableName 表名
	 * @return Cursor 结果集
	 * @author pure
	 */
	public Cursor query(String tableName){
		String sql="select * from "+tableName;
		
		Cursor cursor = databaseHelper.getWritableDatabase()
				.rawQuery(sql, null);
		
		return cursor;	
	}
	
	/**
	 * 更新
	 * @param tableName 表名
	 * @param column 要修改的字段名
	 * @param value 修改后的字段值
	 * @param condition 条件
	 * @author pure
	 */
	public void update(String tableName,List<String> column,List<Object> value,String condition){
		SQLiteDatabase db = databaseHelper.getWritableDatabase();
		String sql="update "+tableName+" set ";
		for(int i=0;i<column.size()-1;i++){
			sql+=column.get(i)+"=?,";
		}
		sql+=column.get(column.size()-1)+"=? where "+condition;
		Object[] object=new Object[value.size()];
		for(int i=0;i<value.size();i++){
			object[i]=value.get(i);
		}
		db.execSQL(sql,object);
		db.close();
	}
	
	/**
	 * 更新所有
	 * @param tableName 表名
	 * @param column 要修改的字段名
	 * @param value 修改后的字段值
	 * @author pure
	 */
	public void updateAll(String tableName,List<String> column,List<Object> value){
		SQLiteDatabase db = databaseHelper.getWritableDatabase();
		String sql="update "+tableName+" set ";
		for(int i=0;i<column.size()-1;i++){
			sql+=column.get(i)+"=?,";
		}
		sql+=column.get(column.size()-1)+"=?";
		Object[] object=new Object[value.size()];
		for(int i=0;i<value.size();i++){
			object[i]=value.get(i);
		}
		db.execSQL(sql,object);
		db.close();
	}
	
	/**
	 * 删除
	 * @param tableName 表明
	 * @param condition 条件
	 * @author pure
	 */
	public void delete(String tableName,String condition){
		SQLiteDatabase db = databaseHelper.getWritableDatabase();
		String sql="delete from "+tableName+" where "+condition;
		db.execSQL(sql);
		db.close();
	}
	
	/**
	 * 删除所有
	 * @param tableName 表名
	 * @author pure
	 */
	public void deleteAll(String tableName){
		SQLiteDatabase db = databaseHelper.getWritableDatabase();
		String sql1="delete from "+tableName;
		db.execSQL(sql1);
//		String sql2="update sqlite_sequence set seq=0 where name=?";
//		db.execSQL(sql2,new String[]{tableName});
		db.close();
	}
	
}
